package com.hc.jdbc.transfer;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import com.hc.jdbc.util.JdbcUtilsV2;
import org.junit.Test;
/**
 * t_bank表的业务相关类
 */
public class BankService {
    /**
     * 转账的业务方法
     * 事务添加是在业务方法中
     * 利用try catch代码块，开启事务和提交事务，以及事务回滚
     * 将connection传入dao层即可，dao只负责使用，不要close
     *
     * @param addAccount 加钱账号
     * @param subAccount 减钱账号
     * @param money 钱数
     * @throws Exception
     */
    public void transfer(String addAccount, String subAccount, int money) throws Exception{
        BankDao bankDao = new BankDao();

//一个事务的最基本要求，必须是同一个连接对象connection
      Connection connection = JdbcUtilsV2.getConnection();

        try {
//开启事务: 关闭事务自动提交
            connection.setAutoCommit(false);
            bankDao.add(addAccount, money, connection);
            bankDao.sub(subAccount, money, connection);
//事务提交
            connection.commit();
        } catch (Exception e) {
//事务回滚
            connection.rollback();
            e.printStackTrace();
        } finally {
            connection.close();
        }
    }
}